package com.beiben.workflow.service;

import com.beiben.workflow.domain.WfApply;
import com.beiben.workflow.domain.WfApplyVo;

import java.util.List;

/**
 * 工作流申请Service接口
 *
 * @author 熊国强
 * @date 2020-12-17
 */
public interface IWfApplyService {
    /**
     * 查询工作流申请
     *
     * @param applyId 工作流申请ID
     * @return 工作流申请
     */
    public WfApply selectWfApplyById(Long applyId);

    /**
     * 查询工作流申请列表
     *
     * @param wfApply 工作流申请
     * @return 工作流申请集合
     */
    public List<WfApply> selectWfApplyList(WfApply wfApply);

    /**
     * 新增工作流申请
     *
     * @param wfApply 工作流申请
     * @return 结果
     */
    public int insertWfApply(WfApply wfApply);

    /**
     * 修改工作流申请
     *
     * @param wfApply 工作流申请
     * @return 结果
     */
    public int updateWfApply(WfApply wfApply);

    /**
     * 批量删除工作流申请
     *
     * @param applyIds 需要删除的工作流申请ID
     * @return 结果
     */
    public int deleteWfApplyByIds(Long[] applyIds);

    /**
     * 删除工作流申请信息
     *
     * @param applyId 工作流申请ID
     * @return 结果
     */
    public int deleteWfApplyById(Long applyId);

    /**
     * 提交申请 并插入审批流程
     *
     * @param wfApply
     * @return
     */
    Long submitApplyCheck(WfApplyVo wfApply);

    List<WfApplyVo> applyList(WfApplyVo wfApply);

    /**
     * 按申请id 修改申请状态
     *
     * @param applyId 申请id
     * @param state   状态
     * @return
     */
    public int updateApplyState(Long applyId, String state);

    /**
     * 根据用户id 及 申请id 提交审批
     *
     * @param userId
     * @param apply
     * @return
     */
    int submit(Long userId, WfApply apply);
}